/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int cmp(const void* pa, const void* pb){
    return (*(int*)pa - *(int*)pb);
}
int* targetIndices(int* nums, int numsSize, int target, int* returnSize) {
    qsort(nums, numsSize, sizeof(int), cmp);
    int left = 0, right = numsSize - 1;
    *returnSize = 0;
    while(left <= right && nums[left] < target){
        left++;
    }
    while(left <= right && nums[right] > target){
        right--;
    }
    if(right - left < 0){
        return NULL;
    }
    *returnSize = right - left + 1;
    int* ans = (int*)malloc(sizeof(int) * (right - left + 1));
    int j = 0;
    while(j < *returnSize && left <= right){
        ans[j++] = left++;
    }
    return ans;
}

/*给你一个下标从 0 开始的整数数组 nums 以及一个目标元素 target 。

目标下标是一个满足 nums[i] == target 的下标 i 。

将 nums 按非递减顺序排序后，返回由 nums 中目标下标组成的列表。如果不存在目标下标，返回一个空列表。返回的列表必须按递增顺序排列。*/